skip-zone is a straightforward disributor abling to spread a flat symbol or velocity pattern over the zones of a section. The distribution is made according to the length values bound to each of the zones of the section. skip-zone skips the number of zones before it starts distribution to the end of the section.
If the symbol pattern is distributed :once, then the symbol pattern overlaps the zones until there are no more symbols left, and the rests are distributed for the rest of the section. :repeat makes the symbol pattern repeat all over when the values are been used. :restart will make the pattern to start from the beginning each time zone changes.
skip-zone is used within def-section &cloning and it automatically adjusts into the context. This means you don't have to supply the length and zone values. If used outside a context the values must be supplied.
In the process of distribution the lengths of the zone are summed until they exceed the zone length, and the number of lengths that fit into this zone are filled with symbols. A zoned pattern is returned.
Note that a nil symbol or a velocity zone generates a rest zone. When the compiler notices nil values for a zone, even if the zone is a positive length, a rest zone is generated, and the compilation continues from the next zone.
(skip-zone 0 :once ; skip 0 zones before distribution
'(a b c) ; symbols to be distributed
'((1/4) (1/8) (1/4)) ; lenghts for each zone
'(1/2 1/2 1/2 1/2)) ; zone lengths of a section
--> ((a b) (c = = =) nil nil) ; symbols for each zone